from django.http import HttpResponse
from django.shortcuts import render
from django.shortcuts import redirect
from blog.models import Users
from blog.models import Goods
from blog.models import Cars
import math

def hw(request):
    return HttpResponse('<h1 align="center" style="color:red;">首页！！！</h1>')

def index(request):
    #name = request.GET.get('name')
    #name的值获取 和session关联 uid是否存在
    if request.session.get('uid',None):
        #有值 Ture 说明登陆过
        name = Users.objects.filter(uid=request.session['uid'])[0].username
    else:
        #无值 Flase 说明没登陆过
        name = None

    stuname = 'liu'
    grade = 95
    good = {'id':1,'name':'服饰','imgsrc':'/static/img/002.jpg','price':4.8,'count':4}
    # goods = [
    #    {'id': 1, 'name': '服饰', 'imgsrc': '/static/img/002.jpg', 'price': 4.8, 'count': 4},
    #    {'id': 2, 'name': '首饰', 'imgsrc': '/static/img/002.jpg', 'price': 4.8, 'count': 4},
    #    {'id': 3, 'name': '鞋靴', 'imgsrc': '/static/img/002.jpg', 'price': 4.8, 'count': 4},
    #    {'id': 4, 'name': '包包', 'imgsrc': '/static/img/002.jpg', 'price': 4.8, 'count': 4}
    # ]
    #接收前端传递 keywords
    keywords = request.GET.get('keywords')
    if keywords:
        goods = Goods.objects.filter(name__contains=keywords) #输入关键词
    else:
        goods = Goods.objects.all()
    #给前端传递的页码列表 pagelist[1.2.3....]  len()方法 ：获取列表长度  math.ceil() ：向上取整
    #封装函数range(start,end) :自动生成从start开始（包含）到end结束（不包含）的列表
    pagelist = range(1,math.ceil(len(goods)/5)+1)
    # 接收前端传递的页码参数
    page = request.GET.get('page')
    if page:
        # 有值 字符串 转化为 整数
        page = int(page)
    else:
        # 无值默认展示第一页
        page = 1
    #截取数据库查询的结果的 前5个 ：利用python中的列表切片
    goods = goods[5*(page-1):5*page]
    return render(request,"index.html",{'pagelist':pagelist,'goods':goods,"name":name,'stuname':stuname,'grade':grade})





def login(request):
    if request.POST:
        username = request.POST.get('username')
        userpsd = request.POST.get('userpad')
        result = Users.objects.filter(username=username,userpsd=userpsd)
        #[ { username:xiaoxi,userpsd:123456} ]
        if result:
            # 判断一下 当前有值的账号对应的密码和 前端发送的密码是否匹配
            if result[0].userpsd == userpsd:
                # return HttpResponse('登陆成功！')
                # 设置session
                request.session['uid'] = result[0].uid
                return redirect('/index/') #+:字符串拼接
            else:
                # 账号存在 密码错误
                return render(request, 'login.html')
        else:
            # 账号不存在
            # return HttpResponse("登陆失败！")
            return render(request,'register.html')
        # return render(request,"login.html")
    return render(request,'login.html')

def register(request):
    if request.POST:
        username = request.POST.get('username')
        userpsd = request.POST.get('userpsd')
        #插入数据库
        #将用户类 实例化 对象
        #user1 = Users(uid=1,username=username,userpsd=userpsd)
        #数据保存
        #user1.save()
        Users.objects.create(uid=None,username=username,userpsd=userpsd)
    return render(request,'register.html')

def nav(request):
    one = [
        {
            '院系设置':[
                {'理工农学院':['计算机科学','软件工程','土木建筑','园林艺术']},
                {'文艺法学院':['计算机科学1','软件工程1','土木建筑1','园林艺术1']},
                {'经管学院':['计算机科学2','软件工程2','土木建筑2','园林艺术2']},
                {'医学院':['计算机科学3','软件工程3','土木建筑3','园林艺术3']},
            ]
        },
        {'师资团队':[{'理工农学院':['计算机科学0','软件工程0','土木建筑0','园林艺术0']},
                {'文艺法学院':['计算机科学1','软件工程1','土木建筑1','园林艺术1']},
                {'经管学院':['计算机科学2','软件工程2','土木建筑2','园林艺术2']},
                {'医学院':['计算机科学3','软件工程3','土木建筑3','园林艺术3']},]},
        {'科学研究':[{'理工农学院':['计算机科学','软件工程','土木建筑','园林艺术']},
                {'文艺法学院':['计算机科学1','软件工程1','土木建筑1','园林艺术1']},
                {'经管学院':['计算机科学2','软件工程2','土木建筑2','园林艺术2']},
                {'医学院':['计算机科学3','软件工程3','土木建筑3','园林艺术3']},]},
        {'招生就业':[{'理工农学院':['计算机科学','软件工程','土木建筑','园林艺术']},
                {'文艺法学院':['计算机科学1','软件工程1','土木建筑1','园林艺术1']},
                {'经管学院':['计算机科学2','软件工程2','土木建筑2','园林艺术2']},
                {'医学院':['计算机科学3','软件工程3','土木建筑3','园林艺术3']},]}
        ]
    return render(request,'nav.html',{'one':one})

def goodinfo(request):

        #接收前端传递 商品id参数
        gid = request.GET.get('gid')
        # 接收 详情页加入购物车传递商品id POST请求
        if request.POST:
            if request.session.get('uid',None):
                gid = request.POST.get('gid')
                uid = request.session['uid']
                #简介数据库操作 通过封装好的数据模型
                #下面两行执行数据库操作
               #car = Cars(gid=gid, buy_count=1, uid=uid)
                #先查询数据库goods表中gid对应商品信息数据 再插入购物车表中
                good = Goods.objects.filter(gid=gid)[0]
                car = Cars(good=good, buy_count=1, uid=uid)
                car.save()
            else:
                return  redirect('/login/')
        # 根据参数执行数据库操作 条件查询 filter
        goods = Goods.objects.filter(gid=gid)
        # 接收 详情页加入购物车传递的 商品id
        # car_gid = request.GET.get('car_gid')
        # if car_gid:
        #     # 根据参数执行数据库操作 插入数据
        #     Cars.objects.create(cid=None, gid=car_gid, buy_count=1)
        #     goods = Goods.objects.filter(gid=car_gid)
        return render(request,'goodinfo.html',{'goods':goods})


def shopping(request):
    #先判断 判断是否登陆 用request.session对象中是否存在键uid的值
    if request.session.get('uid',None):#有值 True 说明登陆过
        #获取session中的uid
        uid = request.session['uid']
        #数据库操作 查询操作 购物车表
        cars = Cars.objects.filter(uid=uid)
        # 数据库查询结果 cars [{cid,gid,buy_count,uid}...]
        goods = [] #设定 响应前端页面的所有购物车商品数据的列表
        for item in cars: # item {cid,gid,buy_count,uid}
            #{[查出来只有一个值]}
            #good是一个对象、字典
            good = Goods.objects.filter(gid=item.gid)[0]
            #good {gid,name,price,count,imgsrc,buy_count}
            good.buy_count = item.buy_count
            good.allprice = good.price * good.buy_count
            goods.append(good)
        return render(request,'shopping.html',{'goods':goods})
    else:#无值 False 说明没登陆
        return redirect('/login/')


def loginout(request):
    #业务处理 --> 数据处理
    #删除session对象中uid建值队 地址对数据库中session表修改session_data字段值
    #request.session.pop('uid')
    #del request.session['uid']
    #request.session.clear()
    #删除数据库中session表对应纪录/数据
    #request.session.delete(request.session.session_key)
    request.session.flush()
    return redirect('/index/')